home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Tools / ProcDump 1.6.2 / BHRAMA / C / BHRAMA.C next >
Encoding:
C/C++ Source or Header  |  1999-04-18  |  3.7 KB  |  110 lines

  1. /* 
  2.  * Bhrama Client-Server Interface 0.3
  3.  * (c)1999 CindyG
  4.  *
  5.  * bhrama.c: Interface implementation
  6.  */
  7.  
  8. #define WIN32_LEAN_AND_MEAN
  9. #define STRICT
  10. #include <windows.h>
  11. #include "bhrama_internal.h"
  12.  
  13. // --------------------------------------------------------------------------
  14. // FUNCTION: bhrama_getserverhandle()
  15. // DESCRIPT: 
  16. // --------------------------------------------------------------------------
  17.  
  18. HWND bhrama_getserverhandle()
  19. {
  20.     /* todo: start server if not found? */
  21.     return FindWindow(NULL, BHRAMA_SERVER_ID);
  22. }
  23.  
  24. // --------------------------------------------------------------------------
  25. // FUNCTION: bhrama_ipc()
  26. // DESCRIPT: 
  27. // --------------------------------------------------------------------------
  28.  
  29. BOOL bhrama_ipc(DWORD pid, DWORD function, PBHRAMA_IPC_STRUCT bhrama)
  30. {
  31.     HWND pdserver = bhrama_getserverhandle();
  32.  
  33.     if (pdserver)
  34.     {
  35.         COPYDATASTRUCT bhrama_cd;
  36.  
  37.         bhrama->version = BHRAMA_VERSION;
  38.         bhrama->pid     = pid;
  39.         
  40.         bhrama_cd.dwData = function;
  41.         bhrama_cd.cbData = sizeof(BHRAMA_IPC_STRUCT);
  42.         bhrama_cd.lpData = (PVOID)bhrama;
  43.     
  44.         SendMessage(pdserver, WM_COPYDATA, (WPARAM)NULL, (LPARAM)&bhrama_cd);
  45.         return TRUE;
  46.     }
  47.     return FALSE;
  48. }
  49.  
  50. // --------------------------------------------------------------------------
  51. // FUNCTION: bhrama_query()
  52. // DESCRIPT: 
  53. // --------------------------------------------------------------------------
  54.  
  55. BOOL bhrama_query(DWORD pid)
  56. {
  57.     BHRAMA_IPC_STRUCT bhrama;
  58.     ZeroMemory(&bhrama, sizeof(bhrama));
  59.  
  60.     // todo: no specs available yet
  61.  
  62.     return bhrama_ipc(pid, BHRAMA_QUERY_PID, &bhrama);
  63. }
  64.  
  65. // --------------------------------------------------------------------------
  66. // FUNCTION: bhrama_dump()
  67. // DESCRIPT: 
  68. // --------------------------------------------------------------------------
  69.  
  70. BOOL bhrama_dump(DWORD pid, DWORD eip, DWORD delay, DWORD import, DWORD options)
  71. {
  72.     BHRAMA_IPC_STRUCT bhrama;
  73.     ZeroMemory(&bhrama, sizeof(bhrama));
  74.  
  75.     bhrama.dump.eip                   = eip;
  76.     bhrama.dump.delay                 = delay;
  77.     bhrama.dump.internal_predump      = (options & BHRAMA_PREDUMP_AUTODUMP) ? 1 : 0;
  78.     bhrama.dump.delayed_predump       = (delay != 0) ? 1 : 0;
  79.     bhrama.dump.ignore_faults         = (options & BHRAMA_TRACE_RANGECHECK) ? 1 : 0;
  80.     bhrama.dump.no_eip_confirm        = (options & BHRAMA_TRACE_AUTOEIP) ? 0 : 1;
  81.     bhrama.dump.no_layer_confirm      = (options & BHRAMA_TRACE_AUTOLAYER) ? 0 : 1;
  82.     bhrama.dump.trace_api             = (options & BHRAMA_TRACE_TRACEAPI) ? 1 : 0;
  83.     bhrama.dump.recompute_object_size = (options & BHRAMA_RESTORE_AUTOOBJ) ? 1 : 0;
  84.     bhrama.dump.optimize_pe           = (options & BHRAMA_RESTORE_SHRINKPE) ? 1 : 0;
  85.     bhrama.dump.rebuild_relocations   = (options & BHRAMA_RESTORE_RELOC) ? 1 : 0;
  86.     bhrama.dump.rebuild_header        = (options & BHRAMA_RESTORE_HEADER) ? 1 : 0;
  87.     bhrama.dump.rebuild_import        = (BYTE)import;
  88.     bhrama.dump.force_raw_mode        = (options & BHRAMA_LOADER_RAWMODE) ? 1 : 0;
  89.     bhrama.dump.merge_code            = (options & BHRAMA_LOADER_MERGECODE) ? 1 : 0;
  90.     bhrama.dump.check_header          = (options & BHRAMA_LOADER_CHECKHEADER) ? 1 : 0;
  91.     bhrama.dump.show_disassembly      = (options & BHRAMA_MISC_SHOWDISASM) ? 1 : 0;
  92.  
  93.     return bhrama_ipc(pid, BHRAMA_DUMP_PID, &bhrama);
  94. }
  95.  
  96. // --------------------------------------------------------------------------
  97. // FUNCTION: bhrama_dumppart()
  98. // DESCRIPT: 
  99. // --------------------------------------------------------------------------
  100.  
  101. BOOL bhrama_dumppart(DWORD pid, DWORD start, DWORD length)
  102. {
  103.     BHRAMA_IPC_STRUCT bhrama;
  104.     ZeroMemory(&bhrama, sizeof(bhrama));
  105.  
  106.     bhrama.dumppart.start  = start;
  107.     bhrama.dumppart.length = length;
  108.  
  109.     return bhrama_ipc(pid, BHRAMA_DUMP_PID_PART, &bhrama);
  110. }